package com.atguigu.JVMDay02;

//引用计数法  判断一个对象是否是垃圾，是否需要被回收
//使用计数器，每当有一个地方引用他时，计数器加一，当引用失效时，计数器减一，
// 当计数器为0时，该对象就是不可能再被使用的
public class RefCountGC {
    Object reference = null;
    public static void main(String[] args) {
        RefCountGC obj1 = new RefCountGC();
        RefCountGC obj2 = new RefCountGC();
        obj1.reference = obj2;
        obj2.reference = obj1;
        obj1 = null;
        obj2 = null;
        //显示的执行垃圾回收行为
        //这里发生GC，object和obj2能否被回收?
        //答案是不能，因为即使把obj1和obj2设置为null了，但是二者之间还存在循环引用
        System.gc();
        System.out.println(obj1);
        System.out.println(obj2);
    }

}
